home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / tool / dprint / dpatoi.c < prev    next >
Text File  |  1994-08-11  |  1KB  |  86 lines

  1. /*
  2.  
  3. 8086|Printman/POSTCARD 固定小数点数処理ルーチン
  4. Copyright (c) 1993,94 Delmonta
  5.  
  6. */
  7.  
  8. #include"dprint.h"
  9.  
  10. /*---------------------------------------------------------------------------*/
  11.  
  12. fract    dpatoi(char *p)
  13. {
  14.     char    c;
  15.     bool    sign = FALSE;
  16.     int    h=0,l=0;
  17.     int    i;
  18.  
  19.     while    ((c=*p)==' ')
  20.         p++;
  21.  
  22.     if    (c=='-')
  23.     {
  24.         sign = TRUE;
  25.         p++;
  26.     }
  27.     else if    (c=='+')
  28.     {
  29.         sign = FALSE;
  30.         p++;
  31.     }
  32.  
  33.     while    ('0'<=(c=*(p++)) && c<='9')
  34.     {
  35.         h = h*10 + (c-'0');
  36.  
  37.         if    (h>326)
  38.             goto dpatoi_err;
  39.     }
  40.  
  41.     if    (c<=' ')    /* コントロールコードもしくはスペース */
  42.         goto dpatoi_end;
  43.     else if    (c!='.')
  44.         goto dpatoi_err;
  45.  
  46.     i = 10;
  47.  
  48.     while    ('0'<=(c=*(p++)) && c<='9')
  49.     {
  50.         l = l + (c-'0')*i;
  51.         i = i/10;
  52.     }
  53.  
  54.     if    (c>' ')
  55.         goto dpatoi_err;
  56.  
  57. dpatoi_end:
  58.     i = h*100 + l;
  59.     if    (sign)
  60.         i = -i;
  61.  
  62.     return i;
  63.  
  64. dpatoi_err:
  65.     return DPATOI_ERROR;
  66. }
  67.  
  68. /*---------------------------------------------------------------------------*/
  69.  
  70. char    *putfract(char *buf,fract val)
  71. {
  72.     int    h,l;
  73.  
  74.     if    (val<0)        h = -val;
  75.     else            h = val;
  76.  
  77.     l = h%100;
  78.     h = h/100;
  79.  
  80.     if    (val<0)        h = -h;
  81.  
  82.     sprintf(buf,"%4d.%02u",h,l);
  83.  
  84.     return buf;
  85. }
  86.